As a result of the widespread adoption of smart-phones, the number of different platforms available for execution of applications has exploded. In addition to the relatively few operating systems available for other devices such as personal computers, application developers must now consider a number of new mobile operating systems (such as WINDOWS MOBILE, GOOGLE ANDROID, APPLE IPHONE, and NOKIA SUMBIAN operating systems) in order to ensure broad operability. Adding to this dilemma, equipment and service providers often add to or otherwise alter open operating systems such as the GOOGLE ANDROID operating system, thereby requiring application developers to take numerous versions of the same operating system into account when testing an application.
In many cases, the only way to ensure that an application will operate correctly on these various devices is to test the application on each such device or using an associated software development kit (SDK). This process, however, is time consuming and requires the developer to obtain the devices or SDKs to be evaluated before testing and debugging may commence.
Additionally, application developers often seek to integrate functionality of their application with other systems. For example, a developer may wish to retrieve a user's location from a GPS system or may wish to interface with a payment processor. While such third-party systems often provide application programmer interfaces (APIs), proper utilization often demands thorough research into each API. Further, it is often difficult for a developer to test their application's interaction with an API; untested code may incur charges for API use and/or may have unintended effects.
Overall, application development is currently a daunting task. Developers are on their own to not only program an application, but to test it against various devices and APIs, ensure broad compatibility, obtain necessary certifications, submit finished applications to various application stores, and create demand for their application.